<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        .wrap {
            width: 300px;
            margin: 100px auto 0;
        }

        table {
            border-collapse: collapse;
            border-spacing: 0;
            border: 1px solid #c0c0c0;
            width: 300px;
        }

        th,
        td {
            border: 1px solid #d0d0d0;
            color: #404060;
            padding: 10px;
        }

        th {
            background-color: #09c;
            font: bold 16px "微软雅黑";
            color: #fff;
        }

        td {
            font: 14px "微软雅黑";
        }

        tbody tr {
            background-color: #f0f0f0;
        }

        tbody tr:hover {
            cursor: pointer;
            background-color: #fafafa;
        }
    </style>
</head>
<body>
    <div class="wrap">
        <table>
            <thead>
              <tr>
                  <th>
                      <input type="checkbox" id="all" />
                  </th>
                  <th>商品</th>
                  <th>价钱</th>
              </tr>
            </thead>
            <tbody id="tb">
              <tr>
                  <td>
                      <input type="checkbox" />
                  </td>
                  <td>iPhone8</td>
                  <td>8000</td>
              </tr>
              <tr>
                  <td>
                      <input type="checkbox" />
                  </td>
                  <td>iPad Pro</td>
                  <td>5000</td>
              </tr>
              <tr>
                  <td>
                      <input type="checkbox" />
                  </td>
                  <td>iPad Air</td>
                  <td>2000</td>
              </tr>
              <tr>
                  <td>
                      <input type="checkbox" />
                  </td>
                  <td>Apple Watch</td>
                  <td>2000</td>
              </tr>
  
            </tbody>
        </table>
        <input type="button" value="  反 选  " id="btn">
    </div>

    <script>
        // 获取元素
        var all = document.getElementById("all");
        var tb = document.getElementById("tb");
        var btn = document.getElementById("btn");
        var tb_inputs = tb.getElementsByTagName("input");
        // 设置全选
        all.onclick = function(){
            for(var i=0;i<tb_inputs.length;i++){
                tb_inputs[i].checked=all.checked;
            }
        }
        // 设置子选项.遍历每一个子选项，并设置点击事件
        for(var i=0;i<tb_inputs.length;i++){
            tb_inputs[i].onclick=function(){
        // 只要有一个子选项没有被选中，全选就不被选中
            var isAllChecked=true;
            for(var j=0;j<tb_inputs.length;j++){
                if(tb_inputs[j].checked===false){
                // 只要有一个子选项没有被选中，变量为flase;
                   isAllChecked= false;
                // 只要走到这里，说明肯定不是全选，不需要往下执行循环
                   break;
                }
            }
            // 上述循环结束证明子选项全被被选中，全选也被选中
            all.checked = isAllChecked;
            }
        }
        // 设置反选
        // 让所有的子选项与自己之前的状态相反
        btn.onclick = function(){ 
            for(var k=0;k<tb_inputs.length;k++){
            tb_inputs[k].checked = !tb_inputs[k].checked;
            var isAllChecked=true;
            for(var j=0;j<tb_inputs.length;j++){
                if(tb_inputs[j].checked===false){
                // 只要有一个子选项没有被选中，变量为flase;
                   isAllChecked= false;
                   break;
                }
            }
            // 上述循环结束证明子选项全被被选中，全选也被选中
            all.checked = isAllChecked;
        }
    }
        

        


    </script>   
</body>
</html>